home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib11.dsk / LIGHTSABRE BATTLE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  10KB  |  158 lines

  1. 1  REM   **********************
  2. 2  REM   * LIGHTSABRE BATTLE  *
  3. 3  REM   *  BY MICHAEL LENZ   *
  4. 4  REM   * COPYRIGHT (C) 1982 *
  5. 5  REM   * BY MICRO-SPARC INC *
  6. 6  REM   * LINCOLN, MA. 01773 *
  7. 7  REM   **********************
  8. 10  GOSUB 1060
  9. 20 P$(0) = "LUKE":P$(1) = "DARTH":LX = 7:DX = 27
  10. 30  HOME : GR : COLOR= 2: FOR I = 0 TO 39: HLIN 0,39 AT I: NEXT 
  11. 40  FOR I = 1 TO 30: COLOR=  INT( RND(1) *16): PLOT  INT( RND(1) *40), INT( RND(1) *40)
  12. 50  POKE 768, INT( RND(1) *255): POKE 769,20: CALL 770: NEXT 
  13. 60  COLOR= 15: FOR I = 29 TO 32: HLIN 2,32 AT I: NEXT : FOR I = 27 TO 34: HLIN 0,1 AT I: HLIN 33,37 AT I: NEXT 
  14. 70  VLIN 8,26 AT 35: VLIN 35,39 AT 35: VLIN 9,11 AT 34: VLIN 9,11 AT 36: VLIN 13,15 AT 33: VLIN 13,15 AT 37
  15. 80  PLOT 34,14: PLOT 36,14: PLOT 33,10: PLOT 37,10: COLOR= 2: PLOT 35,10
  16. 90  VTAB 21: HTAB 1: PRINT "* "P$(0)" *";: HTAB 36 - LEN(P$(1)): PRINT "* "P$(1)" *": VTAB 23
  17. 100  PRINT "  HITS";: HTAB 34: PRINT "HITS": PRINT "  SWINGS";: HTAB 32: PRINT "SWINGS";
  18. 110  COLOR= 11: GOSUB 940: COLOR= 8: GOSUB 950: COLOR= 15: GOSUB 960
  19. 120  COLOR= 0: GOSUB 970: COLOR= 5: GOSUB 990
  20. 130  IF   NOT F  THEN  FOR I = 1 TO 1000: NEXT : GOSUB 1000
  21. 140  VTAB 22: HTAB 8: PRINT "LIGHT YOUR LIGHTSABRES!": FOR I = 1 TO 1000: NEXT 
  22. 150  VTAB 22: CALL  -868: VTAB 22: HTAB 12: INVERSE : PRINT "LIGHTSABRE BATTLE": COLOR= 7: VLIN 16,20 AT LX +2: COLOR= 9: VLIN 16,20 AT DX -2
  23. 160  NORMAL : FOR I = 1 TO 20:ZZ =  PEEK( -16336): NEXT 
  24. 170 P0 =  PDL(0): IF P0 <85  THEN 780
  25. 180  IF P0 >170  THEN 840
  26. 190 P1 =  PDL(1): IF P1 <85  THEN 860
  27. 200  IF P1 >170  THEN 920
  28. 210  IF  PEEK( -16287) >127  AND  PEEK( -16286) <128  THEN 260
  29. 220  IF  PEEK( -16286) >127  AND  PEEK( -16287) <128  THEN 390
  30. 230  IF  PEEK( -16287) >127  AND  PEEK( -16286) >127  THEN 720
  31. 240  IF  PEEK( -16384) = 155  THEN  POKE  -16368,0: GOTO 600
  32. 250  GOTO 170
  33. 260  COLOR= 2: VLIN 16,20 AT LX +2: COLOR= 7: HLIN LX +3,LX +8 AT 21
  34. 270  FOR I = 1 TO 10:ZZ =  PEEK( -16336): NEXT 
  35. 280  COLOR= 2: HLIN LX +3,LX +8 AT 21: COLOR= 7: VLIN 16,20 AT LX +2
  36. 290  IF DX <LX +3  OR DX >LX +8  THEN LS = LS +1: GOTO 540
  37. 300  IF DX = LX +8  OR DX = LX +3  THEN LH = LH +1: GOTO 340
  38. 310  IF DX = LX +7  OR DX = LX +4  THEN LH = LH +2: GOTO 340
  39. 320  IF DX = LX +6  THEN LH = LH +3: GOTO 340
  40. 330 LH = LH +5
  41. 340  COLOR= 0: GOSUB 370: FOR I = 1 TO 400: NEXT : COLOR= 2: GOSUB 370
  42. 350  IF LH >24  THEN 600
  43. 360 LS = 0:DS = 0: GOTO 500
  44. 370  VLIN 8,12 AT 12: VLIN 8,12 AT 14: PLOT 13,8: PLOT 13,12
  45. 380  VLIN 8,12 AT 16: VLIN 8,12 AT 20: PLOT 17,11: PLOT 19,11: PLOT 18,10: VLIN 8,10 AT 22: PLOT 22,12: RETURN 
  46. 390  COLOR= 2: VLIN 16,20 AT DX -2: COLOR= 9: HLIN DX -8,DX -3 AT 21
  47. 400  FOR I = 1 TO 10:ZZ =  PEEK( -16336): NEXT 
  48. 410  COLOR= 2: HLIN DX -8,DX -3 AT 21: COLOR= 9: VLIN 16,20 AT DX -2
  49. 420  IF DX <LX +3  OR DX >LX +8  THEN DS = DS +1: GOTO 540
  50. 430  IF DX = LX +8  OR DX = LX +3  THEN DH = DH +1: GOTO 470
  51. 440  IF DX = LX +7  OR DX = LX +4  THEN DH = DH +2: GOTO 470
  52. 450  IF DX = LX +6  THEN DH = DH +3: GOTO 470
  53. 460 DH = DH +5
  54. 470  COLOR= 15: GOSUB 370: FOR I = 1 TO 400: NEXT : COLOR= 2: GOSUB 370
  55. 480  IF DH >24  THEN 600
  56. 490 DS = 0:LS = 0
  57. 500  COLOR= 2: GOSUB 940: GOSUB 950: GOSUB 960: GOSUB 970: GOSUB 990
  58. 510  VLIN 16,20 AT LX +2: VLIN 16,20 AT DX -2:LX = 7:DX = 27
  59. 520  COLOR= 11: GOSUB 940: COLOR= 8: GOSUB 950: COLOR= 15: GOSUB 960: COLOR= 0: GOSUB 970: COLOR= 5: GOSUB 990
  60. 530  COLOR= 7: VLIN 16,20 AT LX +2: COLOR= 9: VLIN 16,20 AT DX -2
  61. 540  VTAB 23: NORMAL : HTAB 8: IF LH <10  THEN  PRINT 0;
  62. 550  PRINT LH;: HTAB 31: IF DH <10  THEN  PRINT 0;
  63. 560  PRINT DH: HTAB 10: PRINT 0LS;: HTAB 29: PRINT 0DS;
  64. 570  IF LS > = 5  THEN 460
  65. 580  IF DS > = 5  THEN 330
  66. 590  GOTO 240
  67. 600  HOME : IF LH >24  THEN  GOSUB 1040: PRINT P$(0)" WINS!!!"
  68. 610  IF DH >24  THEN  GOSUB 1020: PRINT P$(1)" WINS!!!"
  69. 620  FOR I = 250 TO 10  STEP  -10: POKE 768,I: POKE 769,10: CALL 770: NEXT 
  70. 630  FOR I = 20 TO 250  STEP 10: POKE 768,I: POKE 769,10: CALL 770: NEXT 
  71. 640  FOR I = 1 TO 10: PRINT  CHR$(7);: NEXT 
  72. 650  PRINT "THE SCORE WAS ";: INVERSE : IF LH <10  THEN  PRINT 0;
  73. 660  PRINT LH;: NORMAL : PRINT " TO ";: INVERSE : IF DH <10  THEN  PRINT 0;
  74. 670  PRINT DH;: NORMAL : PRINT "."
  75. 680  PRINT : PRINT "ANOTHER GAME (Y/N)?";
  76. 690 ZZ =  PEEK( -16384): POKE  -16368,0: IF ZZ = 206  THEN  HOME : PRINT "MAY THE FORCE BE WITH YOU...WHEREVER YOUGO!": END 
  77. 700  IF ZZ = 217  THEN  CLEAR :F = 1: GOTO 20
  78. 710  GOTO 690
  79. 720  IF DX <LX +3  OR DX >LX +10  THEN F =   NOT F: ON F +1 GOTO 260,390
  80. 730  COLOR= 2: VLIN 16,20 AT LX +2: VLIN 16,20 AT DX -2: COLOR= 7: PLOT LX +3,20: PLOT LX +4,19: PLOT LX +5,18: PLOT LX +6,17
  81. 740  COLOR= 9: PLOT DX -3,20: PLOT DX -4,19: PLOT DX -5,18: PLOT DX -6,17: FOR I = 1 TO 10:ZZ =  PEEK( -16336): NEXT 
  82. 750  COLOR= 2: PLOT LX +3,20: PLOT LX +4,19: PLOT LX +5,18: PLOT LX +6,17: PLOT DX -3,20: PLOT DX -4,19: PLOT DX -5,18: PLOT DX -6,17
  83. 760  COLOR= 7: VLIN 16,20 AT LX +2: COLOR= 9: VLIN 16,20 AT DX -2
  84. 770  GOTO 240
  85. 780  IF LX = 7  THEN 190
  86. 790  COLOR= 2: GOSUB 940: GOSUB 950: GOSUB 960: VLIN 16,20 AT LX +2:LX = LX -1
  87. 800  COLOR= 11: GOSUB 940: COLOR= 8: GOSUB 950: COLOR= 15: GOSUB 960: COLOR= 0: GOSUB 970: COLOR= 5: GOSUB 990: COLOR= 7: VLIN 16,20 AT LX +2: COLOR= 9: VLIN 16,20 AT DX -2: COLOR= 8
  88. 810  PLOT LX -2,24: PLOT LX -3,25: PLOT LX -4,26: VLIN 27,28 AT LX -5
  89. 820  POKE 768,25: POKE 769,20: CALL 770
  90. 830  COLOR= 2: PLOT LX -2,24: PLOT LX -3,25: PLOT LX -4,26: VLIN 27,28 AT LX -5: GOTO 190
  91. 840  IF LX = 23  THEN 190
  92. 850  COLOR= 2: GOSUB 940: GOSUB 950: GOSUB 960: VLIN 16,20 AT LX +2:LX = LX +1: GOTO 800
  93. 860  IF DX = 11  THEN 210
  94. 870  COLOR= 2: GOSUB 970: GOSUB 990: VLIN 16,20 AT DX -2:DX = DX -1
  95. 880  COLOR= 0: GOSUB 970: COLOR= 5: GOSUB 990: COLOR= 11: GOSUB 940: COLOR= 8: GOSUB 950: COLOR= 15: GOSUB 960: COLOR= 9: VLIN 16,20 AT DX -2: COLOR= 7: VLIN 16,20 AT LX +2: COLOR= 0
  96. 890  PLOT DX +2,24: PLOT DX +3,25: PLOT DX +4,26: COLOR= 5: VLIN 27,28 AT DX +5
  97. 900  POKE 768,240: POKE 769,20: CALL 770
  98. 910  COLOR= 2: PLOT DX +2,24: PLOT DX +3,25: PLOT DX +4,26: VLIN 27,28 AT DX +5: GOTO 210
  99. 920  IF DX = 27  THEN 210
  100. 930  COLOR= 2: GOSUB 970: GOSUB 990: VLIN 16,20 AT DX -2:DX = DX +1: GOTO 880
  101. 940  VLIN 17,19 AT LX -1: VLIN 17,18 AT LX: PLOT LX +2,21: RETURN 
  102. 950  VLIN 23,28 AT LX: VLIN 20,21 AT LX: PLOT LX +1,21: PLOT LX -1,23: PLOT LX +1,28: RETURN 
  103. 960  VLIN 20,22 AT LX -1: PLOT LX,22: RETURN 
  104. 970  VLIN 17,19 AT DX +1: VLIN 17,18 AT DX: HLIN DX -2,DX AT 21: VLIN 23,26 AT DX
  105. 980  PLOT DX +1,23: PLOT DX,20: RETURN 
  106. 990  VLIN 27,28 AT DX: VLIN 20,22 AT DX +1: PLOT DX,22: PLOT DX -1,28: RETURN 
  107. 1000  READ PI,TI: IF PI =  -99  THEN  RETURN 
  108. 1010  POKE 768,PI: POKE 769,TI: CALL 770: GOTO 1000
  109. 1020  COLOR= 2: GOSUB 940: GOSUB 950: GOSUB 960: VLIN 16,20 AT LX +2: COLOR= 11: HLIN 3,5 AT 28: HLIN 3,4 AT 27: PLOT 7,25: COLOR= 15: HLIN 6,8 AT 28: PLOT 8,27
  110. 1030  COLOR= 8: HLIN 6,7 AT 27: PLOT 7,26: HLIN 9,13 AT 27: PLOT 13,26: PLOT 9,28: COLOR= 0: GOSUB 970: COLOR= 5: GOSUB 990: RETURN 
  111. 1040  COLOR= 2: GOSUB 970: GOSUB 990: VLIN 16,20 AT DX -2: COLOR= 0: HLIN 28,30 AT 28: HLIN 29,30 AT 27: HLIN 26,27 AT 27: VLIN 25,26 AT 26: HLIN 23,24 AT 27: PLOT 24,28
  112. 1050  COLOR= 5: HLIN 25,27 AT 28: PLOT 25,27: HLIN 21,22 AT 27: PLOT 21,26: COLOR= 11: GOSUB 940: COLOR= 8: GOSUB 950: COLOR= 15: GOSUB 960: RETURN 
  113. 1060  POKE 50,255: SPEED= 255
  114. 1070  TEXT : HOME : GOSUB 1470
  115. 1080  VTAB 24: HTAB 11: INVERSE : PRINT "LIGHTSABRE BATTLE";: NORMAL 
  116. 1090  FOR I = 240 TO 20  STEP  -10: POKE 768,I: POKE 769,10: CALL 770: CALL  -912: NEXT 
  117. 1100  VTAB 3: HTAB 12: PRINT "BY MICHAEL LENZ": HTAB 10: PRINT "INSTRUCTIONS (Y/N)?"
  118. 1110 ZZ =  PEEK( -16384): IF ZZ = 217  THEN 1130
  119. 1120  IF ZZ < >206  THEN 1110
  120. 1130  POKE  -16368,0: HOME : FOR I = 20 TO 240  STEP 10: POKE 768,I: POKE 769,10: CALL 770: NEXT 
  121. 1140  IF ZZ = 206  THEN  RETURN 
  122. 1150  INVERSE : PRINT  SPC( 40);: FOR I = 2 TO 22: VTAB I: HTAB 1: PRINT " ";: HTAB 40: PRINT " ";: NEXT : VTAB 23: PRINT  SPC( 40);: NORMAL 
  123. 1160  POKE 33,38: POKE 32,1: POKE 34,1: POKE 35,22
  124. 1170  VTAB 1: HTAB 14: INVERSE : PRINT "INSTRUCTIONS": VTAB 23: HTAB 9: PRINT "HIT ANY KEY TO CONTINUE": NORMAL : SPEED= 125
  125. 1180  VTAB 3: HTAB 1: PRINT "   IN THE IMMENSE, DESERTED REACTOR"
  126. 1190  PRINT "SHAFT IN THE CLOUD CITY OF BESPIN,"
  127. 1200  PRINT "DARTH VADER AND LUKE SKYWALKER BATTLE"
  128. 1210  PRINT "A DEATH DUEL ARMED ONLY WITH TWO"
  129. 1220  PRINT "METER-LONG LIGHTSABRES! THIS GAME"
  130. 1230  PRINT "SIMULATES THAT DUEL IN COLOR GRAPHICS.";
  131. 1240  PRINT "ONE PLAYER IS DARTH, WHO IS CONTROLLED";
  132. 1250  PRINT "BY PADDLE ONE, AND THE OTHER PLAYER"
  133. 1260  PRINT "IS LUKE WHO USES PADDLE ZERO. EACH"
  134. 1270  PRINT "PLAYER STARTS AT ONE END OF THE "
  135. 1280  PRINT "CATWALK. AS THEY TURN THE PADDLES,"
  136. 1290  PRINT "THEIR MEN MOVE IN THE CORRESPONDING"
  137. 1300  PRINT "DIRECTION. WHEN A PLAYER IS DIRECTLY"
  138. 1310  PRINT "IN FRONT OF HIS OPPONENT, PUSHING THE"
  139. 1320  PRINT "PADDLE BUTTON SWINGS HIS LIGHTSABRE."
  140. 1330  IF  PEEK( -16384) <128  THEN 1330
  141. 1340  POKE  -16368,0: HOME : VTAB 6: HTAB 1
  142. 1350  PRINT "HE RECEIVES POINTS DEPENDING ON HOW"
  143. 1360  PRINT "CLOSE OR FAR AWAY HE IS FROM HIS"
  144. 1370  PRINT "OPPONENT. EACH PLAYER HAS FIVE SWINGS"
  145. 1380  PRINT "PER HIT. AND WHEN THEY ARE USED UP HIS";
  146. 1390  PRINT "OPPONENT GETS CREDIT FOR A HIT. IF"
  147. 1400  PRINT "BOTH PLAYERS SWING SIMULTANEOUSLY,"
  148. 1410  PRINT "THEY BLOCK EACH OTHER AND NO SWINGS"
  149. 1420  PRINT "ARE COUNTED. THE GAME IS OVER WHEN ONE";
  150. 1430  PRINT "OF THE PLAYERS REACHES AT LEAST 25"
  151. 1440  PRINT "POINTS."
  152. 1450  IF  PEEK( -16384) <128  THEN 1450
  153. 1460  POKE  -16368,0: TEXT : SPEED= 255: RETURN 
  154. 1470  FOR I = 770 TO 790: READ ZZ: POKE I,ZZ: NEXT : RETURN 
  155. 1480  DATA  173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,2,3,96
  156. 1490  DATA  228,100,228,100,228,100,171,220,114,220,128,100,136,100,152,100,85,220,114,220,128,100,136,100,152,100,85,220,114,220,128,100,136,100,128,100,152,255
  157. 1500  DATA  228,100,228,100,228,100,171,220,114,220,128,100,136,100,152,100,85,220,114,220,128,100,136,100,152,100,85,220,114,220,128,100,136,100,128,100,152,255
  158. 1510  DATA -99,0: REM  S/W MUSIC